home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
X User Tools
/
X User Tools (O'Reilly and Associates)(1994).ISO
/
sun4c
/
archive
/
tcltk.z
/
tcltk
/
man
/
catn
/
text.n
< prev
next >
Wrap
Text File
|
1994-09-20
|
44KB
|
1,057 lines
text(n) Tk Commands
_________________________________________________________________
NAME
text - Create and manipulate text widgets
SYNOPSIS
text _p_a_t_h_N_a_m_e ?_o_p_t_i_o_n_s?
STANDARD OPTIONS
background foreground insertWidth selectBorderWidth
borderWidth insertBackground padXselectForeground
cursor insertBorderWidth padYsetGrid
exportSelection insertOffTime relief yScrollCommand
font insertOnTime selectBackground
See the ``options'' manual entry for details on the standard
options.
WIDGET-SPECIFIC OPTIONS
Name: height
Class: Height
Command-Line Switch: -height
Specifies the desired height for the window, in units
of characters. Must be at least one.
Name: state
Class: State
Command-Line Switch: -state
Specifies one of two states for the text: normal or
disabled. If the text is disabled then characters may
not be inserted or deleted and no insertion cursor will
be displayed, even if the input focus is in the widget.
Name: width
Class: Width
Command-Line Switch: -width
Specifies the desired width for the window in units of
characters. If the font doesn't have a uniform width
then the width of the character ``0'' is used in
translating from character units to screen units.
Name: wrap
Class: Wrap
Command-Line Switch: -wrap
Specifies how to handle lines in the text that are too
long to be displayed in a single line of the text's
window. The value must be none or char or word. A
wrap mode of none means that each line of text appears
Tk 1
text(n) Tk Commands
as exactly one line on the screen; extra characters
that don't fit on the screen are not displayed. In the
other modes each line of text will be broken up into
several screen lines if necessary to keep all the char-
acters visible. In char mode a screen line break may
occur after any character; in word mode a line break
will only be made at word boundaries.
_________________________________________________________________
DESCRIPTION
The text command creates a new window (given by the _p_a_t_h_N_a_m_e
argument) and makes it into a text widget. Additional
options, described above, may be specified on the command
line or in the option database to configure aspects of the
text such as its default background color and relief. The
text command returns the path name of the new window.
A text widget displays one or more lines of text and allows
that text to be edited. Text widgets support three dif-
ferent kinds of annotations on the text, called tags, marks,
and windows. Tags allow different portions of the text to
be displayed with different fonts and colors. In addition,
Tcl commands can be associated with tags so that commands
are invoked when particular actions such as keystrokes and
mouse button presses occur in particular ranges of the text.
See TAGS below for more details.
The second form of annotation consists of marks, which are
floating markers in the text. Marks are used to keep track
of various interesting positions in the text as it is
edited. See MARKS below for more details.
The third form of annotation allows arbitrary windows to be
displayed in the text widget. See WINDOWS below for more
details.
INDICES
Many of the widget commands for texts take one or more
indices as arguments. An index is a string used to indicate
a particular place within a text, such as a place to insert
characters or one endpoint of a range of characters to
delete. Indices have the syntax
_b_a_s_e _m_o_d_i_f_i_e_r _m_o_d_i_f_i_e_r _m_o_d_i_f_i_e_r ...
Where _b_a_s_e gives a starting point and the _m_o_d_i_f_i_e_rs adjust
the index from the starting point (e.g. move forward or
backward one character). Every index must contain a _b_a_s_e,
but the _m_o_d_i_f_i_e_rs are optional.
Tk 2
text(n) Tk Commands
The _b_a_s_e for an index must have one of the following forms:
_l_i_n_e._c_h_a_r Indicates _c_h_a_r'th character on line _l_i_n_e. Lines
are numbered from 1 for consistency with other
UNIX programs that use this numbering scheme.
Within a line, characters are numbered from 0.
@_x,_y Indicates the character that covers the pixel
whose x and y coordinates within the text's win-
dow are _x and _y.
end Indicates the last character in the text, which
is always a newline character.
_m_a_r_k Indicates the character just after the mark
whose name is _m_a_r_k.
_t_a_g.first Indicates the first character in the text that
has been tagged with _t_a_g. This form generates
an error if no characters are currently tagged
with _t_a_g.
_t_a_g.last Indicates the character just after the last one
in the text that has been tagged with _t_a_g. This
form generates an error if no characters are
currently tagged with _t_a_g.
If modifiers follow the base index, each one of them must
have one of the forms listed below. Keywords such as chars
and wordend may be abbreviated as long as the abbreviation
is unambiguous.
+ _c_o_u_n_t chars
Adjust the index forward by _c_o_u_n_t characters, moving to
later lines in the text if necessary. If there are
fewer than _c_o_u_n_t characters in the text after the
current index, then set the index to the last character
in the text. Spaces on either side of _c_o_u_n_t are
optional.
- _c_o_u_n_t chars
Adjust the index backward by _c_o_u_n_t characters, moving
to earlier lines in the text if necessary. If there
are fewer than _c_o_u_n_t characters in the text before the
current index, then set the index to the first charac-
ter in the text. Spaces on either side of _c_o_u_n_t are
optional.
+ _c_o_u_n_t lines
Adjust the index forward by _c_o_u_n_t lines, retaining the
same character position within the line. If there are
fewer than _c_o_u_n_t lines after the line containing the
Tk 3
text(n) Tk Commands
current index, then set the index to refer to the same
character position on the last line of the text. Then,
if the line is not long enough to contain a character
at the indicated character position, adjust the charac-
ter position to refer to the last character of the line
(the newline). Spaces on either side of _c_o_u_n_t are
optional.
- _c_o_u_n_t lines
Adjust the index backward by _c_o_u_n_t lines, retaining the
same character position within the line. If there are
fewer than _c_o_u_n_t lines before the line containing the
current index, then set the index to refer to the same
character position on the first line of the text.
Then, if the line is not long enough to contain a char-
acter at the indicated character position, adjust the
character position to refer to the last character of
the line (the newline). Spaces on either side of _c_o_u_n_t
are optional.
linestart
Adjust the index to refer to the first character on the
line.
lineend
Adjust the index to refer to the last character on the
line (the newline).
wordstart
Adjust the index to refer to the first character of the
word containing the current index. A word consists of
any number of adjacent characters that are letters,
digits, or underscores, or a single character that is
not one of these.
wordend
Adjust the index to refer to the character just after
the last one of the word containing the current index.
If the current index refers to the last character of
the text then it is not modified.
If more than one modifier is present then they are applied
in left-to-right order. For example, the index ``end - 1
chars'' refers to the next-to-last character in the text and
``insert wordstart - 1 c'' refers to the character just
before the first one in the word containing the insertion
cursor.
TAGS
The first form of annotation in text widgets is a tag. A
tag is a textual string that is associated with some of the
Tk 4
text(n) Tk Commands
characters in a text. There may be any number of tags asso-
ciated with characters in a text. Each tag may refer to a
single character, a range of characters, or several ranges
of characters. An individual character may have any number
of tags associated with it.
A priority order is defined among tags, and this order is
used in implementing some of the tag-related functions
described below. When a tag is defined (by associating it
with characters or setting its display options or binding
commands to it), it is given a priority higher than any
existing tag. The priority order of tags may be redefined
using the ``_p_a_t_h_N_a_m_e tag raise'' and ``_p_a_t_h_N_a_m_e tag lower''
widget commands.
Tags serve three purposes in text widgets. First, they con-
trol the way information is displayed on the screen. By
default, characters are displayed as determined by the back-
ground, font, and foreground options for the text widget.
However, display options may be associated with individual
tags using the ``_p_a_t_h_N_a_m_e tag configure'' widget command.
If a character has been tagged, then the display options
associated with the tag override the default display style.
The following options are currently supported for tags:
-background _c_o_l_o_r
_C_o_l_o_r specifies the background color to use for charac-
ters associated with the tag. It may have any of the
forms accepted by Tk_GetColor.
-bgstipple _b_i_t_m_a_p
_B_i_t_m_a_p specifies a bitmap that is used as a stipple
pattern for the background. It may have any of the
forms accepted by Tk_GetBitmap. If _b_i_t_m_a_p hasn't been
specified, or if it is specified as an empty string,
then a solid fill will be used for the background.
-borderwidth _p_i_x_e_l_s
_P_i_x_e_l_s specifies the width of a 3-D border to draw
around the background. It may have any of the forms
accepted by Tk_GetPixels. This option is used in con-
junction with the -relief option to give a 3-D appear-
ance to the background for characters; it is ignored
unless the -background option has been set for the tag.
-fgstipple _b_i_t_m_a_p
_B_i_t_m_a_p specifies a bitmap that is used as a stipple
pattern when drawing text and other foreground informa-
tion such as underlines. It may have any of the forms
accepted by Tk_GetBitmap. If _b_i_t_m_a_p hasn't been speci-
fied, or if it is specified as an empty string, then a
solid fill will be used.
Tk 5
text(n) Tk Commands
-font _f_o_n_t_N_a_m_e
_F_o_n_t_N_a_m_e is the name of a font to use for drawing char-
acters. It may have any of the forms accepted by
Tk_GetFontStruct.
-foreground _c_o_l_o_r
_C_o_l_o_r specifies the color to use when drawing text and
other foreground information such as underlines. It
may have any of the forms accepted by Tk_GetColor.
-relief _r_e_l_i_e_f
_R_e_l_i_e_f _s_p_e_c_i_f_i_e_s _t_h_e _3-_D _r_e_l_i_e_f _t_o _u_s_e _f_o_r _d_r_a_w_i_n_g
_b_a_c_k_g_r_o_u_n_d_s, _i_n _a_n_y _o_f _t_h_e _f_o_r_m_s _a_c_c_e_p_t_e_d _b_y
Tk_GetRelief. This option is used in conjunction with
the -borderwidth option to give a 3-D appearance to the
background for characters; it is ignored unless the
-background option has been set for the tag.
-underline _b_o_o_l_e_a_n
_B_o_o_l_e_a_n specifies whether or not to draw an underline
underneath characters. It may have any of the forms
accepted by Tk_GetBoolean.
If a character has several tags associated with it, and if
their display options conflict, then the options of the
highest priority tag are used. If a particular display
option hasn't been specified for a particular tag, or if it
is specified as an empty string, then that option will never
be used; the next-highest-priority tag's option will used
instead. If no tag specifies a particular display optionl,
then the default style for the widget will be used.
The second purpose for tags is event bindings. You can
associate bindings with a tag in much the same way you can
associate bindings with a widget class: whenever particular
X events occur on characters with the given tag, a given Tcl
command will be executed. Tag bindings can be used to give
behaviors to ranges of characters; among other things, this
allows hypertext-like features to be implemented. For
details, see the description of the tag bind widget command
below.
The third use for tags is in managing the selection. See
THE SELECTION below.
MARKS
The second form of annotation in text widgets is a mark.
Marks are used for remembering particular places in a text.
They are something like tags, in that they have names and
they refer to places in the file, but a mark isn't associ-
ated with particular characters. Instead, a mark is
Tk 6
text(n) Tk Commands
associated with the gap between two characters. Only a sin-
gle position may be associated with a mark at any given
time. If the characters around a mark are deleted the mark
will still remain; it will just have new neighbor charac-
ters. In contrast, if the characters containing a tag are
deleted then the tag will no longer have an association with
characters in the file. Marks may be manipulated with the
``_p_a_t_h_N_a_m_e mark'' widget command, and their current loca-
tions may be determined by using the mark name as an index
in widget commands.
The name space for marks is different from that for tags:
the same name may be used for both a mark and a tag, but
they will refer to different things.
Two marks have special significance. First, the mark insert
is associated with the insertion cursor, as described under
THE INSERTION CURSOR below. Second, the mark current is
associated with the character closest to the mouse and is
adjusted automatically to track the mouse position and any
changes to the text in the widget (one exception: current
is not updated in response to mouse motions if a mouse but-
ton is down; the update will be deferred until all mouse
buttons have been released). Neither of these special marks
may be unset.
WINDOWS
The third form of annotation in text widgets is a window.
Window support isn't implemented yet, but when it is it will
be described here.
THE SELECTION
Text widgets support the standard X selection. Selection
support is implemented via tags. If the exportSelection
option for the text widget is true then the sel tag will be
associated with the selection:
[1] Whenever characters are tagged with sel the text widget
will claim ownership of the selection.
[2] Attempts to retrieve the selection will be serviced by
the text widget, returning all the charaters with the
sel tag.
[3] If the selection is claimed away by another application
or by another window within this application, then the
sel tag will be removed from all characters in the
text.
Tk 7
text(n) Tk Commands
The sel tag is automatically defined when a text widget is
created, and it may not be deleted with the ``_p_a_t_h_N_a_m_e tag
delete'' widget command. Furthermore, the selectBackground,
selectBorderWidth, and selectForeground options for the text
widget are tied to the -background, -borderwidth, and -fore-
ground options for the sel tag: changes in either will
automatically be reflected in the other.
THE INSERTION CURSOR
The mark named insert has special significance in text widg-
ets. It is defined automatically when a text widget is
created and it may not be unset with the ``_p_a_t_h_N_a_m_e mark
unset'' widget command. The insert mark represents the
position of the insertion cursor, and the insertion cursor
will automatically be drawn at this point whenever the text
widget has the input focus.
WIDGET COMMAND
The text command creates a new Tcl command whose name is the
same as the path name of the text's window. This command
may be used to invoke various operations on the widget. It
has the following general form:
_p_a_t_h_N_a_m_e _o_p_t_i_o_n ?_a_r_g _a_r_g ...?
_P_a_t_h_N_a_m_e is the name of the command, which is the same as
the text widget's path name. _O_p_t_i_o_n and the _a_r_gs determine
the exact behavior of the command. The following commands
are possible for text widgets:
_p_a_t_h_N_a_m_e compare _i_n_d_e_x_1 _o_p _i_n_d_e_x_2
Compares the indices given by _i_n_d_e_x_1 and _i_n_d_e_x_2 accord-
ing to the relational operator given by _o_p, and returns
1 if the relationship is satisfied and 0 if it isn't.
_O_p must be one of the operators <, <=, ==, >=, >, or
!=. If _o_p is == then 1 is returned if the two indices
refer to the same character, if _o_p is < then 1 is
returned if _i_n_d_e_x_1 refers to an earlier character in
the text than _i_n_d_e_x_2, and so on.
_p_a_t_h_N_a_m_e configure ?_o_p_t_i_o_n? ?_v_a_l_u_e _o_p_t_i_o_n _v_a_l_u_e ...?
Query or modify the configuration options of the
widget. If no _o_p_t_i_o_n is specified, returns a list
describing all of the available options for _p_a_t_h_N_a_m_e
(see Tk_ConfigureInfo for information on the format of
this list). If _o_p_t_i_o_n is specified with no _v_a_l_u_e, then
the command returns a list describing the one named
option (this list will be identical to the correspond-
ing sublist of the value returned if no _o_p_t_i_o_n is
specified). If one or more _o_p_t_i_o_n-_v_a_l_u_e pairs are
specified, then the command modifies the given widget
Tk 8
text(n) Tk Commands
option(s) to have the given value(s); in this case the
command returns an empty string. _O_p_t_i_o_n may have any
of the values accepted by the text command.
_p_a_t_h_N_a_m_e debug ?_b_o_o_l_e_a_n?
If _b_o_o_l_e_a_n is specified, then it must have one of the
true or false values accepted by Tcl_GetBoolean. If
the value is a true one then internal consistency
checks will be turned on in the B-tree code associated
with text widgets. If _b_o_o_l_e_a_n has a false value then
the debugging checks will be turned off. In either
case the command returns an empty string. If _b_o_o_l_e_a_n
is not specified then the command returns on or off to
indicate whether or not debugging is turned on. There
is a single debugging switch shared by all text widg-
ets: turning debugging on or off in any widget turns
it on or off for all widgets. For widgets with large
amounts of text, the consistency checks may cause a
noticeable slow-down.
_p_a_t_h_N_a_m_e delete _i_n_d_e_x_1 ?_i_n_d_e_x_2?
Delete a range of characters from the text. If both
_i_n_d_e_x_1 and _i_n_d_e_x_2 are specified, then delete all the
characters starting with the one given by _i_n_d_e_x_1 and
stopping just before _i_n_d_e_x_2 (i.e. the character at
_i_n_d_e_x_2 is not deleted). If _i_n_d_e_x_2 doesn't specify a
position later in the text than _i_n_d_e_x_1 then no charac-
ters are deleted. If _i_n_d_e_x_2 isn't specified then the
single character at _i_n_d_e_x_1 is deleted. It is not
allowable to delete characters in a way that would
leave the text without a newline as the last character.
The command returns an empty string.
_p_a_t_h_N_a_m_e get _i_n_d_e_x_1 ?_i_n_d_e_x_2?
Return a range of characters from the text. The return
value will be all the characters in the text starting
with the one whose index is _i_n_d_e_x_1 and ending just
before the one whose index is _i_n_d_e_x_2 (the character at
_i_n_d_e_x_2 will not be returned). If _i_n_d_e_x_2 is omitted
then the single character at _i_n_d_e_x_1 is returned. If
there are no characters in the specified range (e.g.
_i_n_d_e_x_1 is past the end of the file or _i_n_d_e_x_2 is less
than or equal to _i_n_d_e_x_1) then an empty string is
returned.
_p_a_t_h_N_a_m_e index _i_n_d_e_x
Returns the position corresponding to _i_n_d_e_x in the form
_l_i_n_e._c_h_a_r where _l_i_n_e is the line number and _c_h_a_r is the
character number. _I_n_d_e_x may have any of the forms
described under INDICES above.
_p_a_t_h_N_a_m_e insert _i_n_d_e_x _c_h_a_r_s
Tk 9
text(n) Tk Commands
Inserts _c_h_a_r_s into the text just before the character
at _i_n_d_e_x and returns an empty string. It is not possi-
ble to insert characters after the last newline of the
text.
_p_a_t_h_N_a_m_e mark _o_p_t_i_o_n ?_a_r_g _a_r_g ...?
This command is used to manipulate marks. The exact
behavior of the command depends on the _o_p_t_i_o_n argument
that follows the mark argument. The following forms of
the command are currently supported:
_p_a_t_h_N_a_m_e mark names
Returns a list whose elements are the names of all
the marks that are currently set.
_p_a_t_h_N_a_m_e mark set _m_a_r_k_N_a_m_e _i_n_d_e_x
Sets the mark named _m_a_r_k_N_a_m_e to a position just
before the character at _i_n_d_e_x. If _m_a_r_k_N_a_m_e
already exists, it is moved from its old position;
if it doesn't exist, a new mark is created. This
command returns an empty string.
_p_a_t_h_N_a_m_e mark unset _m_a_r_k_N_a_m_e ?_m_a_r_k_N_a_m_e _m_a_r_k_N_a_m_e ...?
Remove the mark corresponding to each of the _m_a_r_k_-
_N_a_m_e arguments. The removed marks will not be
usable in indices and will not be returned by
future calls to ``_p_a_t_h_N_a_m_e mark names''. This
command returns an empty string.
_p_a_t_h_N_a_m_e scan _o_p_t_i_o_n _a_r_g_s
This command is used to implement scanning on texts.
It has two forms, depending on _o_p_t_i_o_n:
_p_a_t_h_N_a_m_e scan mark _y
Records _y and the current view in the text window;
used in conjunction with later scan dragto com-
mands. Typically this command is associated with
a mouse button press in the widget. It returns an
empty string.
_p_a_t_h_N_a_m_e scan dragto _y
This command computes the difference between its _y
argument and the _y argument to the last scan mark
command for the widget. It then adjusts the view
up or down by 10 times the difference in y-
coordinates. This command is typically associated
with mouse motion events in the widget, to produce
the effect of dragging the text at high speed
through the window. The return value is an empty
string.
_p_a_t_h_N_a_m_e tag _o_p_t_i_o_n ?_a_r_g _a_r_g ...?
Tk 10
text(n) Tk Commands
This command is used to manipulate tags. The exact
behavior of the command depends on the _o_p_t_i_o_n argument
that follows the tag argument. The following forms of
the command are currently supported:
_p_a_t_h_N_a_m_e tag add _t_a_g_N_a_m_e _i_n_d_e_x_1 ?_i_n_d_e_x_2?
Associate the tag _t_a_g_N_a_m_e with all of the charac-
ters starting with _i_n_d_e_x_1 and ending just before
_i_n_d_e_x_2 (the character at _i_n_d_e_x_2 isn't tagged). If
_i_n_d_e_x_2 is omitted then the single character at
_i_n_d_e_x_1 is tagged. If there are no characters in
the specified range (e.g. _i_n_d_e_x_1 is past the end
of the file or _i_n_d_e_x_2 is less than or equal to
_i_n_d_e_x_1) then the command has no effect. This com-
mand returns an empty string.
_p_a_t_h_N_a_m_e tag bind _t_a_g_N_a_m_e ?_s_e_q_u_e_n_c_e? ?_c_o_m_m_a_n_d?
This command associates _c_o_m_m_a_n_d with the tag given
by _t_a_g_N_a_m_e. Whenever the event sequence given by
_s_e_q_u_e_n_c_e occurs for a character that has been
tagged with _t_a_g_N_a_m_e, the command will be invoked.
This widget command is similar to the bind command
except that it operates on characters in a text
rather than entire widgets. See the bind manual
entry for complete details on the syntax of
_s_e_q_u_e_n_c_e and the substitutions performed on _c_o_m_-
_m_a_n_d before invoking it. If all arguments are
specified then a new binding is created, replacing
any existing binding for the same _s_e_q_u_e_n_c_e and
_t_a_g_N_a_m_e (if the first character of _c_o_m_m_a_n_d is
``+'' then _c_o_m_m_a_n_d augments an existing binding
rather than replacing it). In this case the
return value is an empty string. If _c_o_m_m_a_n_d is
omitted then the command returns the _c_o_m_m_a_n_d asso-
ciated with _t_a_g_N_a_m_e and _s_e_q_u_e_n_c_e (an error occurs
if there is no such binding). If both _c_o_m_m_a_n_d and
_s_e_q_u_e_n_c_e are omitted then the command returns a
list of all the sequences for which bindings have
been defined for _t_a_g_N_a_m_e.
The only events for which bindings may be speci-
fied are those related to the mouse and keyboard,
such as Enter, Leave, ButtonPress, Motion, and
KeyPress. Event bindings for a text widget use
the current mark described under MARKS above.
Enter events trigger for a character when it
becomes the current character (i.e. the current
mark moves to just in front of that character).
Leave events trigger for a character when it
ceases to be the current item (i.e. the current
mark moves away from that character, or the char-
acter is deleted). These events are different
Tk 11
text(n) Tk Commands
than Enter and Leave events for windows. Mouse
and keyboard events are directed to the current
character.
It is possible for the current character to have
multiple tags, and for each of them to have a
binding for a particular event sequence. When
this occurs, the binding from the highest priority
tag is used. If a particular tag doesn't have a
binding that matches an event, then the tag is
ignored and tags with lower priority will be
checked.
If bindings are created for the widget as a whole
using the bind command, then those bindings will
supplement the tag bindings. This means that a
single event can trigger two Tcl scripts, one for
a widget-level binding and one for a tag-level
binding.
_v_a_l_u_e ...?
_p_a_t_h_N_a_m_e tag configure _t_a_g_N_a_m_e ?_o_p_t_i_o_n? ?_v_a_l_u_e? ?_o_p_t_i_o_n
This command is similar to the configure widget
command except that it modifies options associated
with the tag given by _t_a_g_N_a_m_e instead of modifying
options for the overall text widget. If no _o_p_t_i_o_n
is specified, the command returns a list describ-
ing all of the available options for _t_a_g_N_a_m_e (see
Tk_ConfigureInfo for information on the format of
this list). If _o_p_t_i_o_n is specified with no _v_a_l_u_e,
then the command returns a list describing the one
named option (this list will be identical to the
corresponding sublist of the value returned if no
_o_p_t_i_o_n is specified). If one or more _o_p_t_i_o_n-_v_a_l_u_e
pairs are specified, then the command modifies the
given option(s) to have the given value(s) in _t_a_g_-
_N_a_m_e; in this case the command returns an empty
string. See TAGS above for details on the options
available for tags.
_p_a_t_h_N_a_m_e tag delete _t_a_g_N_a_m_e ?_t_a_g_N_a_m_e ...?
Deletes all tag information for each of the _t_a_g_-
_N_a_m_e arguments. The command removes the tags from
all characters in the file and also deletes any
other information associated with the tags, such
as bindings and display information. The command
returns an empty string.
_p_a_t_h_N_a_m_etag lower _t_a_g_N_a_m_e ?_b_e_l_o_w_T_h_i_s?
Changes the priority of tag _t_a_g_N_a_m_e so that it is
just lower in priority than the tag whose name is
_b_e_l_o_w_T_h_i_s. If _b_e_l_o_w_T_h_i_s is omitted, then
Tk 12
text(n) Tk Commands
_t_a_g_N_a_m_e's priority is changed to make it lowest
priority of all tags.
_p_a_t_h_N_a_m_e tag names ?_i_n_d_e_x?
Returns a list whose elements are the names of all
the tags that are active at the character position
given by _i_n_d_e_x. If _i_n_d_e_x is omitted, then the
return value will describe all of the tags that
exist for the text (this includes all tags that
have been named in a ``_p_a_t_h_N_a_m_e tag'' widget com-
mand but haven't been deleted by a ``_p_a_t_h_N_a_m_e tag
delete'' widget command, even if no characters are
currently marked with the tag). The list will be
sorted in order from lowest priority to highest
priority.
_p_a_t_h_N_a_m_e tag nextrange _t_a_g_N_a_m_e _i_n_d_e_x_1 ?_i_n_d_e_x_2?
This command searches the text for a range of
characters tagged with _t_a_g_N_a_m_e where the first
character of the range is no earlier than the
character at _i_n_d_e_x_1 and no later than the charac-
ter just before _i_n_d_e_x_2 (a range starting at _i_n_d_e_x_2
will not be considered). If several matching
ranges exist, the first one is chosen. The
command's return value is a list containing two
elements, which are the index of the first charac-
ter of the range and the index of the character
just after the last one in the range. If no
matching range is found then the return value is
an empty string. If _i_n_d_e_x_2 is not given then it
defaults to the end of the text.
_p_a_t_h_N_a_m_etag raise _t_a_g_N_a_m_e ?_a_b_o_v_e_T_h_i_s?
Changes the priority of tag _t_a_g_N_a_m_e so that it is
just higher in priority than the tag whose name is
_a_b_o_v_e_T_h_i_s. If _a_b_o_v_e_T_h_i_s is omitted, then
_t_a_g_N_a_m_e's priority is changed to make it highest
priority of all tags.
_p_a_t_h_N_a_m_e tag ranges _t_a_g_N_a_m_e
Returns a list describing all of the ranges of
text that have been tagged with _t_a_g_N_a_m_e. The
first two elements of the list describe the first
tagged range in the text, the next two elements
describe the second range, and so on. The first
element of each pair contains the index of the
first character of the range, and the second ele-
ment of the pair contains the index of the charac-
ter just after the last one in the range. If
there are no characters tagged with _t_a_g then an
empty string is returned.
Tk 13
text(n) Tk Commands
_p_a_t_h_N_a_m_e tag remove _t_a_g_N_a_m_e _i_n_d_e_x_1 ?_i_n_d_e_x_2?
Remove the tag _t_a_g_N_a_m_e from all of the characters
starting at _i_n_d_e_x_1 and ending just before _i_n_d_e_x_2
(the character at _i_n_d_e_x_2 isn't affected). If
_i_n_d_e_x_2 is omitted then the single character at
_i_n_d_e_x_1 is untagged. If there are no characters in
the specified range (e.g. _i_n_d_e_x_1 is past the end
of the file or _i_n_d_e_x_2 is less than or equal to
_i_n_d_e_x_1) then the command has no effect. This com-
mand returns an empty string.
_p_a_t_h_N_a_m_e yview ?-pickplace? _w_h_a_t
This command changes the view in the widget's window so
that the line given by _w_h_a_t is visible in the window.
_W_h_a_t may be either an absolute line number, where 0
corresponds to the first line of the file, or an index
with any of the forms described under INDICES above.
The first form (absolute line number) is used in the
commands issued by scrollbars to control the widget's
view. If the -pickplace option isn't specified then
_w_h_a_t will appear at the top of the window. If -pick-
place is specified then the widget chooses where _w_h_a_t
appears in the window:
[1] If _w_h_a_t is already visible somewhere in the window
then the command does nothing.
[2] If _w_h_a_t is only a few lines off-screen above the
window then it will be positioned at the top of
the window.
[3] If _w_h_a_t is only a few lines off-screen below the
window then it will be positioned at the bottom of
the window.
[4] Otherwise, _w_h_a_t will be centered in the window.
The -pickplace option is typically used after inserting
text to make sure that the insertion cursor is still
visible on the screen. This command returns an empty
string.
BINDINGS
Tk automatically creates class bindings for texts that give
them the following default behavior:
[1] Pressing mouse button 1 in an text positions the inser-
tion cursor just before the character underneath the
mouse cursor and sets the input focus to this widget.
[2] Dragging with mouse button 1 strokes out a selection
Tk 14
text(n) Tk Commands
between the insertion cursor and the character under
the mouse.
[3] If you double-press mouse button 1 then the word under
the mouse cursor will be selected, the insertion cursor
will be positioned at the beginning of the word, and
dragging the mouse will stroke out a selection whole
words at a time.
[4] If you triple-press mouse button 1 then the line under
the mouse cursor will be selected, the insertion cursor
will be positioned at the beginning of the line, and
dragging the mouse will stroke out a selection whole
line at a time.
[5] The ends of the selection can be adjusted by dragging
with mouse button 1 while the shift key is down; this
will adjust the end of the selection that was nearest
to the mouse cursor when button 1 was pressed. If the
selection was made in word or line mode then it will be
adjusted in this same mode.
[6] The view in the text can be adjusted by dragging with
mouse button 2.
[7] If the input focus is in a text widget and characters
are typed on the keyboard, the characters are inserted
just before the insertion cursor.
[8] Control+h and the Backspace and Delete keys erase the
character just before the insertion cursor.
[9] Control+v inserts the current selection just before the
insertion cursor.
[10] Control+d deletes the selected characters; an error
occurs if the selection is not in this widget.
If the text is disabled using the state option, then the
text's view can still be adjusted and text in the text can
still be selected, but no insertion cursor will be displayed
and no text modifications will take place.
The behavior of texts can be changed by defining new bind-
ings for individual widgets or by redefining the class bind-
ings.
PERFORMANCE ISSUES
Text widgets should run efficiently under a variety of con-
ditions. The text widget uses about 2-3 bytes of main
memory for each byte of text, so texts containing a megabyte
Tk 15
text(n) Tk Commands
or more should be practical on most workstations. Text is
represented internally with a modified B-tree structure that
makes operations relatively efficient even with large texts.
Tags are included in the B-tree structure in a way that
allows tags to span large ranges or have many disjoint
smaller ranges without loss of efficiency. Marks are also
implemented in a way that allows large numbers of marks.
The only known mode of operation where a text widget may not
run efficiently is if it has a very large number of dif-
ferent tags. Hundreds of tags should be fine, or even a
thousand, but tens of thousands of tags will make texts con-
sume a lot of memory and run slowly.
KEYWORDS
text, widget
Tk 16